package com.common.otherInterface;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;

import com.common.otherInterface.bean.IUserInfo;

/**
 * 提供给其它模块要使用的接口。
 * <br>Created 2014-8-13 下午4:03:15
 * @version  
 * @author   suchangjun		
 *
 * @see 	 
 * 
 * Copyright(c) 2009-2014, TQ Digital Entertainment, All Rights Reserved
 * 
 * 录音功能请参考 allcommon中 StarappTalkPopWindow用法。
 * 表情选择请参考 allcommon的SmileyView。
 */


public interface ISquareWantUseInterface {

	/**
	 * 获取客户端本地数据。 
	 * <br>Created 2014-8-13 下午4:13:30
	 * @param uid 要查询的uid。
	 * @return 返回一个 IUserInfo对象，有可能为null.
	 * @author       suchangjun
	 */
	IUserInfo getLocalUserData(long uid);
	
	/**
	 * 通过网络，去服务端获取用户信息数据。
	 * <br>Created 2014-8-13 下午4:16:46
	 * @param context 上下文句柄。
	 * @param wantQueryUid 要查询的uid。
	 * @return  IUserInfo 对象。
	 * @author       suchangjun
	*/
	IUserInfo getUserDataFromService(Context context,long wantQueryUid);
	
    /**
     * 读取本地数据库中好友数据。
     * 
     * @n<b>函数名称</b> :getMyContactDataListFromLocalDb
     * @brief
     * @see
     * @since Ver 1.1
     * @param context
     *            上下文句柄。
     * @param currentUserId
     *            当前用户id
     * @return ArrayList<ContactBean>
     * @<b>作者</b> : suchangjun
     * @<b>创建时间</b> : 2014-4-3下午5:09:26
     */
    ArrayList<IUserInfo> getMyContactDataListFromLocalDb(Context context,
            long currentUserId);

    /**
     * 根据当前用户的id获取当前用户的好友。（注意需要判断网络能用）
     * 
     * @n<b>函数名称</b> :getMyContactDataList
     * @brief
     * @see
     * @since Ver 1.1
     * @param context
     *            上下文句柄。
     * @param currentUserId
     *            当前用户id。
     * @param startIndex
     *            请求开始位置，默认0
     * @param size
     *            请求的数量。-1表示请求所有的数据。
     * @param isGettingMore 是否要增量更新
     * @return ArrayList<ContactBean> 如果没有数据 返回null
     * @<b>作者</b> : suchangjun
     * @<b>创建时间</b> : 2014-4-4下午4:07:42
     */
    ArrayList<IUserInfo> getMyContactDataList(Context context, long currentUserId,
            int startIndex, int size,boolean isGettingMore);
    
    /**
     * 根据当前用户的id获取当前用户的好友。（注意需要判断网络能用）
     * 
     * @n<b>函数名称</b> :getMyContactDataList
     * @brief
     * @see
     * @since Ver 1.1
     * @param context
     *            上下文句柄。
     * @param currentUserId
     *            当前用户id。
     * @param startIndex
     *            请求开始位置，默认0
     * @param size
     *            请求的数量。-1表示请求所有的数据。
     * @return ArrayList<ContactBean> 如果没有数据 返回null
     * @<b>作者</b> : suchangjun
     * @<b>创建时间</b> : 2014-4-4下午4:07:42
     */
    ArrayList<IUserInfo> getMyContactDataList(Context context, long currentUserId,
            int startIndex, int size);
	
    /**
     * 根据当前用户的id获取当前用户的好友(清空数据库后全量更新服务端好友数据，可以保证不会有已删除的好友数据返回)。（注意需要判断网络能用）
     * 
     * @n<b>函数名称</b> :getMyContactDataList
     * @brief
     * @see
     * @since Ver 1.1
     * @param context
     *            上下文句柄。
     * @param currentUserId
     *            当前用户id。
     * @param startIndex
     *            请求开始位置，默认0
     * @param size
     *            请求的数量。-1表示请求所有的数据。
     * @return ArrayList<ContactBean> 如果没有数据 返回null
     * @<b>作者</b> : ChuXY
     * @<b>创建时间</b> : 2014-4-4下午4:07:42
     */
    ArrayList<IUserInfo> getMyContactDataListWithClearAndInsert(Context context, long currentUserId,
            int startIndex, int size);
    
	/**
	 * 
	 * 打开通用联系人选择面板。
	 * <br>
	 * Created 2014-8-18 上午10:00:41
	 * 
	 * @param context 上下文句柄。
	 * @param haveSelectIds 已经选中的联系人。
	 * @param isShowRecentContact 是否显示最近联系人。
	 * @param isFilterHave 是否过滤显示已经选择的联系人。
	 * 说明：
	 * startActivityForResult CommonSelectUserActivity.REQUEST_CODE_TO_SELECT_USER 返回数据。
	 * 再返回数据 CommonSelectUserActivity.RESPONSE_KEY_OTHER 是一个ArrayList<IUserInfo> 只有id和姓名。
	 * @author suchangjun
	 */
     void showSelectContactActivity(Activity context,
			long[] haveSelectIds, boolean isShowRecentContact,
			boolean isFilterHave);
	
 	/**
 	 * 打开浏览本地相册界面
 	 * 
 	 * <br>
 	 * Created 2014-5-7 下午5:36:08
 	 * 
 	 * @param activity
 	 *            界面上下文对象
 	 * @param isMultiSelect
 	 *            是否是多选，true：多选，false：单选
 	 * @param requestCode
 	 *            请求码
 	 * @param paths
 	 *            已经选取的图片路径，用于多选
 	 * 说明：返回的是  StarAppLocalAlbumMultiSelect.SELECTED_IMG 是一个已经选择图片路径ArrayList<String>。         
 	 * @author : HuangYK
 	 */
 	void openLocalAlbum(Activity activity, boolean isMultiSelect,
 			ArrayList<String> paths, int requestCode);
 	
 /**
  * 根据uid跳转到对应个人空间界面
  * 
  * <br>Created 2014-9-9 下午5:36:01
  * @param context 上下文
  * @param uid 用户id
  * @author        ChuXY
  */
 	void openPersonalZoom(Context context,long uid);
}
